package com.group4.datafactorybackend.entity.DO;

import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

/**
 * @author 卑微小峰
 * @date 2022/8/13
 * @description 数据标准目录实体
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value ="data_criterion")
public class DataCriterionDO implements Serializable {

    /**
     * 表ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 数据标准编号
     */
    @TableField("dc_code")
    private String dcCode;

    /**
     * 数据标准中文名
     */
    @Pattern(regexp = "^[a-zA-Z\\u4e00-\\u9fa5]*$",message = "中文名称只支持中文及英文大小写")
    @NotBlank(message = "中文名称不能为空")
    private String dcChName;

    /**
     * 数据标准英文名
     */
    @NotBlank(message = "英文名称不能为空")
    @Pattern(regexp ="^[a-zA-Z][a-zA-Z0-9_]*$",message = "英文名称只支持英文大小写、数字及下划线且只能英文开头")
    private String dcEnName;

    /**
     * 数据标准说明
     */
    @TableField("dc_explain")
    private String dcExplain;

    /**
     * 数据标准来源机构
     */
    @NotBlank(message = "来源机构不能为空")
    @TableField("dc_source_structure")
    private String dcSourceStructure;

    /**
     * 数据类型
     */
    @NotBlank(message = "数据类型不能为空")
    @TableField("dc_data_type")
    private Integer dcDataType;

    /**
     * 数据长度
     */
    @TableField("dc_data_length")
    private Long dcDataLength;

    /**
     * 数据精度
     */
    @TableField("dc_data_precision")
    private Double dcDataPrecision;

    /**
     * 数据默认值
     */
    @TableField("dc_value")
    private String dcValue;

    /**
     * 数据最小值
     */
    @TableField("dc_min_value")
    private String dcMinValue;

    /**
     * 数据最大值
     */
    @TableField("dc_max_value")
    private String dcMaxValue;

    /**
     * 码表名称
     */
    @TableField("stopwatch_name")
    private String stopwatchName;

    /**
     * 数据是否为空
     */
    @TableField("dc_data_null")
    private Integer dcDataNull;

    /**
     * 数据标准状态
     */
    @TableField("dc_status")
    private Integer dcStatus;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time" ,fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time" ,fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}